﻿//*************************************************************************
//面向服务的协作式智能交通系统仿真软件SoC-ITSS v2.1 alpha
//发布单位：西北工业大学--巴黎高科MINES机器人与群智能系统联合实验室
//团队负责人：张凯龙 Zhang Kailong
//团队成员：张大方、杨安胜、王敏、谢策、王雨佳、谢尘玉等
//联系我们：kl.zhang@nwpu.edu.cn
//2012-2021
//*************************************************************************

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;

//*******************************************************
//
//文件名(File Name):           Critical.cs
//
//数据表(Tables):              nothing 
//
//          修改理由：         
//
//*******************************************************
namespace CyberCarSimulation.RoadModel
{
    class Critical
    {
        private string ID;                   //临界区ID
        private string IntersectionID;       //临界区所属路口ID
        private int RelativeID;              //临界区相对位置
        private string EnterLaneID;          //临界区进入车道
        private string ExitLaneID;           //临界区离开车道
        private float Length;                //临界区长度
        private float Width;                 //临界区宽度
        private PointF Point1;               //临界区顶点1
        private PointF Point2;               //临界区顶点2
        private PointF Point3;               //临界区顶点3
        private PointF Point4;               //临界区顶点4
        private int State;                   //临界区状态

        //无参构造
        public Critical()
        { 
        }

        //有参构造
        public Critical(string ID, string IntersectionID,int RelativeID,
                        string EnterLaneID,string ExitLaneID,float Length,
                        float Width, PointF Point1, PointF Point2,
                        PointF Point3, PointF Point4, int State)
        {
            this.ID = ID;
            this.IntersectionID = IntersectionID;
            this.RelativeID = RelativeID;
            this.EnterLaneID = EnterLaneID;
            this.ExitLaneID = ExitLaneID;
            this.Length = Length;
            this.Width = Width;
            this.Point1 = Point1;
            this.Point2 = Point2;
            this.Point3 = Point3;
            this.Point4 = Point4;
            this.State = State;
        }

        //获取临界区ID
        public string GetID()
        {
            return this.ID;
        }

        //设置临界区ID
        public void SetID(string ID)
        {
            this.ID = ID;
        }

        //获取临界区所属路口ID
        public string GetIntersectionID()
        {
            return this.IntersectionID;
        }

        //设置临界区所属路口ID
        public void SetIntersectionID(string IntersectionID)
        {
            this.IntersectionID = IntersectionID;
        }
        

        //获取临界区相对位置
        public int GetRelativeID()
        {
            return this.RelativeID;
        }

        //设置临界区相对位置
        public void SetRelativeID(int RelativeID)
        {
            this.RelativeID = RelativeID;
        }

         
        //获取临界区进入车道ID
        public string GetEnterLaneID()
        {
            return this.EnterLaneID;
        }

        //设置临界区进入车道ID
        public void SetEnterLaneID(string EnterLaneID)
        {
            this.EnterLaneID = EnterLaneID;
        }
            
        //获取临界区离开车道ID
        public string GetExitLaneID()
        {
            return this.ExitLaneID;
        }

        //设置临界区离开车道ID
        public void SetExitLaneID(string ExitLaneID)
        {
            this.ExitLaneID = ExitLaneID;
        }
        
        //获取临界区长度
        public float GetLength()
        {
            return this.Length;
        }

        //设置临界区长度
        public void SetLength(float Length)
        {
            this.Length = Length;
        }

        //获取临界区宽度
        public float GetWidth()
        {
            return this.Width;
        }

        //设置临界区宽度
        public void SetWidth(float Width)
        {
            this.Width = Width;
        }

        //获取临界区顶点坐标1
        public PointF GetPoint1()
        {
            return this.Point1;
        }

        //设置临界区顶点坐标1
        public void SetPoint1(PointF Point1)
        {
            this.Point1 = Point1;
        }

        //获取临界区顶点坐标2
        public PointF GetPoint2()
        {
            return this.Point2;
        }

        //设置临界区顶点坐标2
        public void SetPoint2(PointF Point2)
        {
            this.Point2 = Point2;
        }

        //获取临界区顶点坐标3
        public PointF GetPoint3()
        {
            return this.Point3;
        }

        //设置临界区顶点坐标3
        public void SetPoint3(PointF Point3)
        {
            this.Point3 = Point3;
        }

        //获取临界区顶点坐标4
        public PointF GetPoint4()
        {
            return this.Point4;
        }

        //设置临界区顶点坐标4
        public void SetPoint4(PointF Point4)
        {
            this.Point4 = Point4;
        }
        
        //获取临界区状态
        public int GetSate()
        {
            return this.State;
        }
        
        //设置临界区状态
        public void SetSate(int State)
        {
            this.State = State;
        }
    }
}
